# ifndef __Bitmap_H_
# define __Bitmap_H_

# include "CPtr.h"

class CBitmap : public CCounted<CBitmap> {
	// Disable copy semantics.
	CBitmap (const CBitmap &);
	void operator = (const CBitmap &);

  public:
	CBitmap (long _lWidth, long _lHeight) : m_lWidth (_lWidth), m_lHeight (_lHeight) {}
	virtual ~CBitmap () {}

	long Width  () const {return m_lWidth;}
	long Height () const {return m_lHeight;}

//	virtual BOOL BitBlt     (HDC _hdcDest, int _xDest, int _yDest, int _wDest, int _hDest, DWORD _dwRop = SRCCOPY) const = 0;
//	virtual BOOL StretchBlt (HDC _hdcDest, int _xDest, int _yDest, int _wDest, int _hDest, DWORD _dwRop = SRCCOPY) const = 0;
	virtual BOOL StretchBlt (
		HDC _hdcDest,
		int _xDest, int _yDest, int _wDest, int _hDest,
		int _xSrc,  int _ySrc,  int _wSrc,  int _hSrc,
		DWORD _dwRop = SRCCOPY
	) const = 0;
	virtual BOOL AlphaBlend (
		HDC _hdcDest,
		int _xDest, int _yDest, int _wDest, int _hDest,
		int _xSrc,  int _ySrc,  int _wSrc,  int _hSrc,
		BYTE _SourceConstantAlpha
	) const = 0;

	virtual CBitmap * MakeSmall () const = 0;

  protected:
	long m_lWidth;
	long m_lHeight;
};

# endif // __Bitmap_H_